package com.aiwhose.aiwhosecore.bean.plublicaiwhose.bean;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import lombok.Data;

import java.util.List;

public class ReplyMessageBean {


    /**
     * 回复文本消息
     */
    @Data
    @XStreamAlias("xml")
    public class TextReplyMessage {
        // 接收方微信号（收到的OpenID）
        private String ToUserName;

        // 开发者微信号
        private String FromUserName;

        // 消息创建时间
        private long CreateTime;

        // 消息类型，文本为text
        private String MsgType;

        // 回复的消息内容
        private String Content;
    }

    /**
     * 回复图片消息
     */
    @Data
    @XStreamAlias("xml")
    public class ImageReplyMessage {
        // 接收方微信号（收到的OpenID）
        private String ToUserName;

        // 开发者微信号
        private String FromUserName;

        // 消息创建时间
        private long CreateTime;

        // 消息类型，图片为image
        private String MsgType;

        private Image Image;

        // 默认构造函数，Lombok @Data 注解会自动生成
        public ImageReplyMessage() {
        }

        // 带参数的构造函数
        public ImageReplyMessage(String ToUserName, String FromUserName, long CreateTime, String MsgType, String MediaId) {
            this.ToUserName = ToUserName;
            this.FromUserName = FromUserName;
            this.CreateTime = CreateTime;
            this.MsgType = MsgType;
            this.Image = new Image(MediaId); // 创建Image对象
        }

        // Image 类定义
        @Data
        public static class Image {
            private String MediaId;

            // 默认构造函数，Lombok @Data 注解会自动生成
            public Image() {
            }

            // 带参数的构造函数
            public Image(String MediaId) {
                this.MediaId = MediaId;
            }
        }
    }


    /**
     * 回复语音消息
     */
    @Data
    @XStreamAlias("xml")
    public class VoiceReplyMessage {
        // 接收方微信号（收到的OpenID）
        private String ToUserName;

        // 开发者微信号
        private String FromUserName;

        // 消息创建时间戳
        private long CreateTime;

        // 消息类型，语音为voice
        private String MsgType;

        // 通过素材管理中的接口上传多媒体文件，得到的id
        private String MediaId;
    }


    /**
     * 回复视频消息
     */
    @Data
    @XStreamAlias("xml")
    public class VideoReplyMessage {
        // 接收方微信号（收到的OpenID）
        private String ToUserName;

        // 开发者微信号
        private String FromUserName;

        // 消息创建时间
        private long CreateTime;

        // 消息类型，视频为video
        private String MsgType;

        // 通过素材管理中的接口上传多媒体文件，得到的id
        private String MediaId;

        // 视频消息的标题
        private String Title;

        // 视频消息的描述
        private String Description;
    }


    /**
     * 回复音乐消息
     */
    @Data
    @XStreamAlias("xml")
    public class MusicReplyMessage {
        // 接收方微信号（收到的OpenID）
        private String ToUserName;

        // 开发者微信号
        private String FromUserName;

        // 消息创建时间
        private long CreateTime;

        // 消息类型，音乐为music
        private String MsgType;

        // 音乐标题
        private String Title;

        // 音乐描述
        private String Description;

        // 音乐链接
        private String MusicURL;

        // 高质量音乐链接，WIFI环境优先使用该链接播放音乐
        private String HQMusicUrl;

        // 缩略图的媒体id，通过素材管理中的接口上传多媒体文件，得到的id
        private String ThumbMediaId;
    }

    /**
     * 回复图文消息
     */
    @Data
    @XStreamAlias("xml")
    public class ImageTextReplyMessage {
        // 接收方微信号（收到的OpenID）
        private String ToUserName;

        // 开发者微信号
        private String FromUserName;

        // 消息创建时间
        private long CreateTime;

        // 消息类型，图文为news
        private String MsgType;

        // 图文消息个数
        private int ArticleCount;

        // 图文消息信息
        private List<Article> articles;


        // 内部类表示图文消息
        @Data
        public static class Article {
            // 图文消息标题
            private String Title;

            // 图文消息描述
            private String Description;

            // 图片链接
            private String PicUrl;

            // 点击图文消息跳转链接
            private String Url;

        }
    }


}
